/*
 * Copyright 2008-2023 dexian.vip. All rights reserved.
 * Support: http://www.dexian.vip
 * License: http://www.dexian.vip/license
 */

package vip.dexian.core.base.bean;

import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;

import java.io.Serial;
import java.io.Serializable;

/**
 * 唯一索引实体类， 主要用于逻辑删除，但是又存在唯一索引的表
 *
 * @author 挺好的 2023年06月02日 8:19
 */
@MappedSuperclass
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public abstract class UniqueEntity<ID extends Serializable> extends BaseEntity <ID> {

    @Serial
    private static final long serialVersionUID = -914999713346597793L;

    /**
     * 唯一索引复核标记，使用当前系统的时间戳。如果当前数据未被删除，则使用0，否则使用当前时间戳
     */
    @Comment ("唯一索引标记")
    @Column (nullable = false)
    private Long uniqueTimestamp;
}
